create-usb: Add a --commit option
authorMatthew Leeds <matthew.leeds@endlessm.com>
Mon, 24 Sep 2018 20:57:42 +0000 (13:57 -0700)
committerAtomic Bot <atomic-devel@projectatomic.io>
Tue, 25 Sep 2018 15:47:25 +0000 (15:47 +0000)
commit9a06c5409ec551a56fa1ad137efcd1f2d7044496
tree759664c3ee9e0579cf4ab40d04629bd1aed7de4f
parentc141fe610b652f383a9c445169d3cc6f28f99bd1
create-usb: Add a --commit option

Currently on Endless OS, the OSTree ref for the operating system is
something like os/eos/amd64/eos3, so that's what gets passed to `ostree
create-usb` when copying the OS to a USB drive (for offline updates).
However, when eos-updater checks for updates it pulls the metadata for a
candidate commit and in so doing updates that eos3 ref to point to the
partial commit being examined as a potential update rather than the
deployed commit. This causes `ostree create-usb` to fail with an error
like "No such metadata object
7fb045cb2d1f1f3a81bfc157c6128ff443eb56350315b9536bdb56aee0659863.dirtree".

OSTree creates deployment refs that look like "ostree/1/1/0" to maintain
a pointer to the deployed commit, but create-usb can't use these because
it shows up in the summary as just a ref, not a collection-ref.

So this commit adds a --commit option to the create-usb command, so we
can use the appropriate ref but copy the deployed commit rather than a
(potentially partial) update commit.

Closes: #1735
Approved by: cgwalters
man/ostree-create-usb.xml
src/ostree/ot-builtin-create-usb.c